<?php

namespace frontend\models;

use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use backend\models\Product;

/**
 * ProductSearcher represents the model behind the search form about `backend\models\Product`.
 */
class ProductSearcher extends Product {

	/**
	 * @inheritdoc
	 */
	public function rules() {
		return [
				[['productId', 'categoryId', 'number', 'createTime'], 'integer'],
				[['title', 'description', 'cover', 'pictures', 'issale', 'ishot', 'istui', 'ison'], 'safe'],
				[['price', 'saleprice'], 'number'],
		];
	}

	/**
	 * @inheritdoc
	 */
	public function scenarios() {
		// bypass scenarios() implementation in the parent class
		return Model::scenarios();
	}

	/**
	 * Creates data provider instance with search query applied
	 *
	 * @param array $params
	 *
	 * @return ActiveDataProvider
	 */
	public function search($params, $description = null) {
		if (isset($query)) {
			$query = Product::find()->where(['like', 'description', $description]);
		} else {
			$query = Product::find();
		}

		// add conditions that should always apply here

		$dataProvider = new ActiveDataProvider([
			'query' => $query,
		]);

		$this->load($params);

		if (!$this->validate()) {
			// uncomment the following line if you do not want to return any records when validation fails
			// $query->where('0=1');
			return $dataProvider;
		}

		// grid filtering conditions
		$query->andFilterWhere([
			'productId' => $this->productId,
			'categoryId' => $this->categoryId,
			'number' => $this->number,
			'price' => $this->price,
			'saleprice' => $this->saleprice,
			'createTime' => $this->createTime,
		]);

		$query->andFilterWhere(['like', 'title', $this->title])
				->andFilterWhere(['like', 'description', $this->description])
				->andFilterWhere(['like', 'cover', $this->cover])
				->andFilterWhere(['like', 'pictures', $this->pictures])
				->andFilterWhere(['like', 'issale', $this->issale])
				->andFilterWhere(['like', 'ishot', $this->ishot])
				->andFilterWhere(['like', 'istui', $this->istui])
				->andFilterWhere(['like', 'ison', $this->ison]);

		return $dataProvider;
	}

}
